package cn.itcast.config;

import jakarta.annotation.PostConstruct;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.ai.document.Document;
import org.springframework.ai.vectorstore.VectorStore;
import org.springframework.context.annotation.Configuration;

import java.util.Arrays;
import java.util.List;

/**
 * 向量库初始化配置
 * 用于初始化套餐规则数据到向量库中
 */
@Configuration
@Slf4j
@RequiredArgsConstructor
public class VectorStoreInitConfig {

    private final VectorStore vectorStore;

    @PostConstruct
    public void initVectorStore() {
        log.info("开始初始化向量库，添加套餐规则数据...");
        
        // 根据图片中的规则数据创建文档
        List<Document> ruleDocuments = Arrays.asList(
            new Document(
                """
                id: rule_01
                type: 合约期
                condition: 合约期未满12个月
                description: 提前更换套餐需支付剩余费用的10%作为违约金。
                """,
                java.util.Map.of("ruleId", "rule_01", "type", "合约期")
            ),
            new Document(
                """
                id: rule_02
                type: 携号转网
                condition: 申请携号转网
                description: 需满足:1.无欠费 2.当前套餐已到期 3.非吉祥号段(如138/139开头)。
                """,
                java.util.Map.of("ruleId", "rule_02", "type", "携号转网")
            )
        );
        
        // 添加套餐数据文档
        List<Document> packageDocuments = Arrays.asList(
            new Document(
                """
                套餐名称: 经济卡
                月租: 39元
                流量: 10GB
                通话时长: 100分钟
                附加服务: 无
                合约期: 无
                优惠活动: 首月半价
                """,
                java.util.Map.of("packageName", "经济卡", "monthlyFee", 39)
            ),
            new Document(
                """
                套餐名称: 畅享全家享
                月租: 99元
                流量: 50GB
                通话时长: 500分钟
                附加服务: 200M宽带+2张副卡
                合约期: 12个月
                优惠活动: 送视频会员月卡
                """,
                java.util.Map.of("packageName", "畅享全家享", "monthlyFee", 99)
            ),
            new Document(
                """
                套餐名称: 全球通尊享
                月租: 199元
                流量: 不限量
                通话时长: 2000分钟
                附加服务: 国际漫游+5G优先
                合约期: 24个月
                优惠活动: 机场贵宾厅2次/年
                """,
                java.util.Map.of("packageName", "全球通尊享", "monthlyFee", 199)
            ),
            new Document(
                """
                套餐名称: 学生青春卡
                月租: 59元
                流量: 30GB
                通话时长: 200分钟
                附加服务: 校园网加速
                合约期: 6个月
                优惠活动: 免流特定APP
                """,
                java.util.Map.of("packageName", "学生青春卡", "monthlyFee", 59)
            )
        );
        
        // 将所有文档添加到向量库
        List<Document> allDocuments = new java.util.ArrayList<>();
        allDocuments.addAll(ruleDocuments);
        allDocuments.addAll(packageDocuments);
        
        vectorStore.add(allDocuments);
        log.info("向量库初始化完成，已添加 {} 个文档", allDocuments.size());
    }
}
